package com.quectel.core.module.partybuilding.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 *
 * @author bob
 * @email bob.yu@quectel.com
 * @date 2023/05/24 11:17
 */
@Data
@Schema
public class PartyPersonDto implements Serializable {

    /**
    * id
    */
    @Schema(description = "id")
    private Long id;

    /**
    * 租户id
    */
    @Schema(description = "租户id")
    private Long tenantId;

    /**
    * 所属党组织id
    */
    @Schema(description = "所属党组织id")
    private Long partyId;

    /**
    * 党员姓名
    */
    @Schema(description = "党员姓名")
    private String name;

    /**
    * 头像url
    */
    @Schema(description = "头像url")
    private String avatar;

    /**
    * 性别：1男0女
    */
    @Schema(description = "性别：1男0女")
    private Byte gender;

    /**
    * 身份证号码
    */
    @Schema(description = "身份证号码")
    private String idCardNo;

    /**
    * 手机号
    */
    @Schema(description = "手机号")
    private String mobile;

    /**
    * 固定电话
    */
    @Schema(description = "固定电话")
    private String tel;

    /**
    * 民族 字典值
    */
    @Schema(description = "民族 字典值")
    private Byte nation;

    /**
    * 籍贯
    */
    @Schema(description = "籍贯")
    private String nativePlace;

    /**
    * 出生日期
    */
    @Schema(description = "出生日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date birthDate;

    /**
    * 省份编码
    */
    @Schema(description = "省份编码")
    private String provinceCode;

    /**
    * 省份名称
    */
    @Schema(description = "省份名称")
    private String provinceName;

    /**
    * 市编码
    */
    @Schema(description = "市编码")
    private String cityCode;

    /**
    * 市名称
    */
    @Schema(description = "市名称")
    private String cityName;

    /**
    * 区编码
    */
    @Schema(description = "区编码")
    private String districtCode;

    /**
    * 区名称
    */
    @Schema(description = "区名称")
    private String districtName;

    /**
    * 具体地址
    */
    @Schema(description = "具体地址")
    private String address;

    /**
    * 学历 字典值
    */
    @Schema(description = "学历 字典值")
    private Byte education;

    /**
    * 人员身份类型
    */
    @Schema(description = "人员身份类型")
    private Byte personIdentity;

    /**
    * 在岗状态 字典值
    */
    @Schema(description = "在岗状态 字典值")
    private Byte dutyStatus;

    /**
    * 党内职务
    */
    @Schema(description = "党内职务")
    private String partyJob;

    /**
    * 申请入党时间
    */
    @Schema(description = "申请入党时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date applyJoinTime;

    /**
    * 转为预备党员时间
    */
    @Schema(description = "转为预备党员时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date prepareTime;

    /**
    * 转正时间
    */
    @Schema(description = "转正时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date probationTime;

    /**
    * 党籍状态 字典值
    */
    @Schema(description = "党籍状态 字典值")
    private Byte partyMembershipStatus;

    /**
    * 党员标签
    */
    @Schema(description = "党员标签")
    private String tags;

    /**
    * 流动党员状态 0否1是
    */
    @Schema(description = "流动党员状态 0否1是")
    private Byte flowStatus;

    /**
    * 失联状态 0否1是
    */
    @Schema(description = "失联状态 0否1是")
    private Byte missingStatus;

    /**
     * 失联时间
     */
    @Schema(description = "失联时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date missingTime;

    /**
    * 人员流向
    */
    @Schema(description = "人员流向")
    private String personFlow;

    /**
    * 附件
    */
    @Schema(description = "附件")
    private String extFiles;

    /**
    * 人员简介
    */
    @Schema(description = "人员简介")
    private String remark;

    /**
    * 创建人
    */
    @Schema(description = "创建人")
    private String creator;

    /**
    * 创建时间
    */
    @Schema(description = "创建时间")
    private Date createTime;

    /**
    * 修改人
    */
    @Schema(description = "修改人")
    private String editor;

    /**
    * 修改时间
    */
    @Schema(description = "修改时间")
    private Date editTime;

    /************非数据库字段 start ************/
    @Schema(description = "组织名称")
    private PartyOrganizationDto party;

    @Schema(description = "党组织名称")
    private String partyName;

    /************非数据库字段 end **************/
}
